/**
 * Copyright ©2003~2019年4月3日 szkingdom
 * @author raohj
 * @date 2019年4月3日
 * @file RConvert.java
 * @comment : please input your comment to this file
 * @version : input version
 * @modify:
 * 		1、 2019年4月3日 由 raohj 新建文件
 */
package com.ccnu.demojava.util;

/**
 * @author raohj
 * @date 2019年4月3日
 * @version
 * @comment to add your comment
 */
public class RConvert {
	/**
	 * @author raohj
	 * @date 2019年4月3日
	 * @comment byte转short
	 * @param
	 * @return
	 * @param b
	 * @return
	 */
	public static short bytesToShort(byte[] b) {
		return (short) (b[1] & 0xff | (b[0] & 0xff) << 8);
	}

	public static int bytesToInt(byte[] b) {
		return (b[0] & 0xff) << 24 | (b[1] & 0xff) << 16 | (b[2] & 0xff) << 8 | (b[3] & 0xff);
	}

	/**
	 * @author raohj
	 * @date 2019年4月3日
	 * @comment add your comment
	 * @param
	 * @return
	 * @param b
	 * @return
	 */
	public static long bytesToLong(byte[] b) {
		long value = 0;
		// 循环读取每个字节通过移位运算完成long的8个字节拼装
		for (int count = 0; count < 8; ++count) {
			int shift = (7 - count) << 3;
			value |= ((long) 0xff << shift) & ((long) b[count] << shift);
		}
		return value;
	}

	public static float bytesToFloat(byte[] b) {
		float value = 0.00f;
		// 循环读取每个字节通过移位运算完成long的8个字节拼装
//        for(int  count=0;count<4;++count){
//        	float shift=(7-count)<<3;
//            value |=((long)0xff<< shift) & ((long)b[count] << shift);
//        }
		return value;
	}

	public static double bytesToDouble(byte[] b) {
		double value = 0.00d;
		// 循环读取每个字节通过移位运算完成long的8个字节拼装
//        for(int  count=0;count<8;++count){
//        	double shift=(7-count)<<3;
//            value |=((long)0xff<< shift) & ((long)b[count] << shift);
//        }
		return value;
	}

	/**
	 * @author raohj
	 * @date 2019年4月3日
	 * @comment byte转十六进制输出
	 * @param
	 * @return
	 * @param src
	 * @return
	 */
	public static String bytesToHexString(byte[] src) {
		StringBuilder stringBuilder = new StringBuilder("");
		if (src == null || src.length <= 0) {
			return null;
		}
		for (int i = 0; i < src.length; i++) {
			int v = src[i] & 0xFF;
			String hv = Integer.toHexString(v);
			if (hv.length() < 2) {
				stringBuilder.append(0);
			}
			stringBuilder.append(hv);
		}
		return stringBuilder.toString();
	}

}
